package cn.iocoder.yudao.module.wine.service.businesscredit;

import java.util.*;
import javax.validation.*;

import cn.iocoder.yudao.module.wine.controller.admin.businesscredit.vo.*;
import cn.iocoder.yudao.module.wine.controller.app.businesscredit.vo.AppBusinessCreditRespVO;
import cn.iocoder.yudao.module.wine.dal.dataobject.businesscredit.BusinessCreditDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.wine.enums.ErrorCodeConstants.*;

/**
 * 会员等级管理 Service 接口
 *
 * @author 管理员
 */
public interface BusinessCreditService {

    /**
     * 创建会员等级管理
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createBusinessCredit(@Valid BusinessCreditSaveReqVO createReqVO);

    /**
     * 更新会员等级管理
     *
     * @param updateReqVO 更新信息
     */
    void updateBusinessCredit(@Valid BusinessCreditSaveReqVO updateReqVO);

    /**
     * 删除会员等级管理
     *
     * @param id 编号
     */
    void deleteBusinessCredit(Long id);

    /**
     * 获得会员等级管理
     *
     * @param id 编号
     * @return 会员等级管理
     */
    BusinessCreditDO getBusinessCredit(Long id);

    /**
     * 根据等级值获取类型
     * @param levelValue
     * @return
     */
    BusinessCreditDO getBusinessCreditByLevel(Integer levelValue);
    /**
     * 获得会员等级管理分页
     *
     * @param pageReqVO 分页查询
     * @return 会员等级管理分页
     */
    PageResult<BusinessCreditDO> getBusinessCreditPage(BusinessCreditPageReqVO pageReqVO);

    /**
     * 获得会员等级管理
     * @return
     */
    List<BusinessCreditDO> getBusinessCreditList();

    /**
     * app获取会员等级保证金列表
     * @return
     */
    List<AppBusinessCreditRespVO> appGetBusinessCreditList();

}
